Embodiments of the present invention relate to text and graphical data user interfaces. More particularly, embodiments of the present invention relate to displaying and scrolling a hierarchical data structure.
Modern computers and data processing devices typically utilize displays such as CRT""s (Cathode Ray Tubes) and LCD""s (Liquid Crystal Displays) to display text and graphics data. A user interacts with an application program that allows the creation, viewing and/or editing of a data file or document on the display device. Data files or documents often contain a large amount of text and graphics data that cannot be displayed simultaneously on a display.
Computing devices typically can execute a technique known as scrolling to permit a user to navigate through a document. Scrolling is an operation in which a user issues commands to a computing device to instruct it to display a particular portion of data on a display. The user scrolls a document by issuing commands through a keyboard or mouse. Known scrolling controls include a scroll bar, consisting of an icon displayed on the display, that allows the user to instruct the computer (via a pointing device such as a mouse) to display a different portion of the document. Conventional scrolling controls provide a range of functionality, typically allowing the user to scroll data up, down, left or right.
FIG. 1 shows a conventional user interface with scrolling functionality. Typically the user interface depicted in FIG. 1 may be implemented in a windows environment but can also be applicable to a non-windows environment. In one embodiment, the conventional user interface is a graphical user interface (GUI). The user interface depicted in FIG. 1 includes an arrangement of control icons for performing scrolling operations. Window 105 consists of a display area 110, left scrolling button 150, right scrolling button 170, horizontal scroll bar 160, up scrolling button 120, down scrolling button 140, and vertical scroll bar 130. When a user selects any of left scrolling button 150, right scrolling button 170, up scrolling button 120 or down scrolling button 140 by clicking on the respective scrolling button using a mouse, window 105 scrolls in the respective direction. The scrolling windows includes portions of data 14-26. The position of the horizontal scroll bar 160 showing that additional data can be displayed to the left and the right, and the position of the vertical scroll bar 130 showing that additional data can be displayed to the top and the bottom. The user may also scroll window 105 by clicking and dragging horizontal scroll bar 160 or vertical scroll bar 130 in the desired direction of scrolling.
The conventional user interface illustrated in FIG. 1 can display hierarchical data. An example of hierarchical data includes music data, e.g., artist, album and song data. A music database can contain music from three artists: artist A, artist B, and artist C. The music database can contain album E of artist A, which album E includes songs M, N and O. Album H and album J of artist B can be included in the music database, where album H includes songs P, Q, R, and S, and album J includes songs T and U. The music database can include albums K and L of artist C, where album K includes song V and album L includes song W and song X. The music data can be displayed in the conventional user interface illustrated in FIG. 1 by including the artist data in a column A of window 105, album data in a column B of window 105, and song data in a column C of window 105. Each song of the song data can be displayed on one row of rows 1-12 of window 105. The conventional user interface of FIG. 1 displays the hierarchical album and artist data for each of songs M-X, but the display is repetitive (e.g., displaying three instances of artist A in cell A1 (i.e., the cell located in column A and row 1), cell A2, and cell A3) and the hierarchical nature of the data is obscured.
FIG. 2 shows the user interface of FIG. 1 displaying a portion of the hierarchical data illustrated in FIG. 3. FIG. 3 illustrates a hierarchical data set. The hierarchical data includes three root nodes 305, 405 and 505. In another embodiment, each of nodes 305, 405 and 505 are child nodes of a parent node. Each of root nodes 305, 405 and 505 have at least one non-terminal node. A non-terminal node is typically a node that has both a parent node and at least one child node. A terminal node (i.e., a leaf node) is typically a node that has a parent node but no child nodes. Root node 305 has non-terminal node 310, which has terminal nodes 311-313. Root node 405 has non-terminal nodes 410 and 420, which respectively have terminal nodes 411-414 and terminal nodes 421-422. Root node 505 has non-terminal nodes 510, 520, 530, 540 and 550, which respectively have the following terminal nodes: 511; 521-525; 531-534; 541-544; and 551 to 555.
FIG. 2 displays portion of the hierarchical data illustrated in FIG. 3. FIG. 2 identifies the root nodes in column A of window 105, non-terminal nodes in column B of window 105, and terminal nodes in column C of window 105. Each of terminal nodes 311-313, 411-414, 421-422, 511, and 521-522 are displayed on one row of rows 1-12 of window 105 in FIG. 2. The conventional user interface of FIG. 2 displays the root node and non-terminal node of each of terminal nodes 311-313, 411-414, 421-422, 511, and 521-522, but the display is repetitive (e.g., displaying three instances of root node 305 in cells A1, A2, and A3). Moreover, the pertinent hierarchical relationships are obscured, which can result in confusion and inefficiency for a user viewing the conventional user interface of FIG. 2. In view of the foregoing, it can be appreciated that a substantial need exists for methods and apparatus which can advantageously display hierarchical data.
Embodiments of the present invention include methods and apparatus to display and scroll hierarchical data. A plurality of parent nodes can be displayed within a first display area, with each displayed parent node of the plurality of parent nodes having at least one child node. A computer can determine that at most one child node for each displayed parent node of the plurality of parent nodes is to be displayed. A child node scrolling instruction can be received. A child node display percentile can be determined based at least in part on the child node scrolling instruction. One child node of each displayed parent node of the plurality of parent nodes can be selected based at least in part on the determined child node display percentile. Each selected one child node of each displayed parent node of the plurality of parent nodes can be displayed in a second display area, with each displayed child node being displayed as associated with the displayed parent node of the displayed child node.